﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace TaskSimulator
{
    public class HTTPHelper
    {
        /// <summary>
        /// WebRequest下载文件
        /// </summary>
        public static string HttpDownloadFile(string url, string path)
        {
            // 设置参数
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            //发送请求并获取相应回应数据
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            
            //直到request.GetResponse()程序才开始向目标网页发送Post请求
            Stream responseStream = response.GetResponseStream();

            //创建本地文件写入流
            Stream stream = new FileStream(path, FileMode.Create);

            byte[] bArr = new byte[1024];
            int size = responseStream.Read(bArr, 0, (int)bArr.Length);
            while (size > 0)
            {
                stream.Write(bArr, 0, size);
                size = responseStream.Read(bArr, 0, (int)bArr.Length);
            }
            stream.Close();
            responseStream.Close();
            return path;
        }

        /// <summary>
        /// WebClient下载文件
        /// </summary>
        /// <param name="uRLAddress"></param>
        /// <param name="localPath"></param>
        /// <param name="progressChange"></param>
        /// <param name="downloadComplete"></param>
        public static void WebClientDownFileAsync(string uRLAddress, string localPath, DownloadProgressChangedEventHandler progressChange = null, AsyncCompletedEventHandler downloadComplete = null)
        {
            WebClient client = new WebClient();
            client.DownloadProgressChanged += progressChange;
            client.DownloadFileCompleted += downloadComplete;
            client.DownloadFileAsync(new Uri(uRLAddress), localPath);
        }
    }
}
